#include <sys/time.h>
#include <sys/resource.h>
#include <stdlib.h>
#include <stdio.h>
#include <assert.h>



/*! \file back_trace.h
    \brief A Documented file.
    
    Details.
*/

#ifndef __GET_RESSOURCE__CONSO
#define __GET_RESSOURCE__CONSO


int getrusage (int who, struct rusage *usage);
struct rusage usage;

#ifdef STRUCT
/**
   *Structure regroupant les informations
   *sur l'etat de la pile des appels
   */
struct rusage {
              struct timeval ru_utime; /* Temps utilisateur écoulé         */
              struct timeval ru_stime; /* Temps système écoulé             */
              long  ru_maxrss;         /* Taille résidente maximale        */
              long  ru_ixrss;          /* Taille de mémoire partagée       */
              long  ru_idrss;          /* Taille des données non partagées */
              long  ru_isrss;          /* Taille de pile                   */
              long  ru_minflt;         /* Demandes de pages                */
              long  ru_majflt;         /* Nombre de fautes de pages        */
              long  ru_nswap;          /* Nombre de swaps                  */
              long  ru_inblock;        /* Nombre de lectures de blocs      */
              long  ru_oublock;        /* Nombre d’écritures de blocs      */
              long  ru_msgsnd;         /* Nombre de messages émis          */
              long  ru_msgrcv;         /* Nombre de messages reçus         */
              long  ru_nsignals;       /* Nombre de signaux reçus          */
              long  ru_nvcsw;          /* Chgmnts de contexte volontaires  */
              long  ru_nivcsw;         /* Chgmnts de contexte involontaires*/
           	};
#endif


#define GET_RESSOURCES_CONSO(){\
assert(getrusage(RUSAGE_SELF,&usage)==0);\
printf("Demandes de pages          : %d\n",usage.ru_minflt);\
printf("Nombre de defaut de page   : %d\n",usage.ru_majflt);\
printf("Taille de pile             : %d\n",usage.ru_isrss);\
printf("Taille de mémoire partagée : %d\n",usage.ru_ixrss);\
printf("Taille de mémoire privée   : %d\n",usage.ru_idrss);}\


#endif
